#pragma once
#include"Headerfile.hpp"
// 1. 获取系统时间
//  2. 获取⽂件⼤⼩
//  3. 创建⽬录
//  4. 获取⽂件所在⽬录
namespace shw
{

    namespace util
    {
        class date
        {
        public:
            static time_t Now() // 获取当前时间
            {
                return time(nullptr);
            }
        };
        class file
        {
        public:
            static bool Exist(const std::string &name)
            {
                struct stat st;
                return (stat(name.c_str(), &st) == 0); // 返回值是0，说明文件存在
            }
            static std::string Path(const std::string &name) // 获取文件路径
            {
                if (name.empty())
                    return ".";
                size_t pos = name.find_last_of("/\\");
                if (pos == std::string::npos)
                    return ".";                 // 没找到
                return name.substr(0, pos + 1); //+1是把'.'也加上
            }
            // ./abc/vs/vsfv/fef/
            static void CreateDirectory(const std::string &path)
            {
                if (path.empty())
                    return;
                if (Exist(path))
                    return;
                size_t pos = 0, index = 0;
                while (index < path.size())
                {
                    pos = path.find_first_of("/\\", index);
                    if (pos == std::string::npos) //  abc这种形式
                    {
                        mkdir(path.c_str(), 0777);
                        return;
                    }
                    if (pos == index) // "/abc"，需要再找一下
                    {
                        index = pos + 1;
                        continue;
                    }
                    std::string subdir = path.substr(0, pos); // 拿到前面部分路径名，创建文件夹
                    if (subdir == "." || subdir == "..")
                    {
                        index = pos + 1;
                        continue;
                    }
                    if (Exist(subdir)) // 文件已经存在
                    {
                        index = pos + 1;
                        continue;
                    }
                    mkdir(subdir.c_str(), 0777); //
                    index = pos + 1;
                }
            }
        };
    }
}